home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fritz: All Fritz
/
All Fritz.zip
/
All Fritz
/
FILES
/
PROGMISC
/
XLISP.LZH
/
XLISPSRC.ARC
/
XLINIT.C
< prev
next >
Wrap
Text File
|
1986-04-05
|
4KB
|
124 lines
/* xlinit.c - xlisp initialization module */
/* Copyright (c) 1985, by David Michael Betz
All Rights Reserved
Permission is granted for unrestricted non-commercial use */
#include "xlisp.h"
/* external variables */
extern NODE *true,*s_dot;
extern NODE *s_quote,*s_function,*s_bquote,*s_comma,*s_comat;
extern NODE *s_lambda,*s_macro;
extern NODE *s_stdin,*s_stdout;
extern NODE *s_evalhook,*s_applyhook;
extern NODE *s_tracenable,*s_tlimit,*s_breakenable;
extern NODE *s_car,*s_cdr,*s_nth,*s_get,*s_svalue,*s_splist,*s_aref,*s_eql;
extern NODE *s_rtable,*k_wspace,*k_const,*k_nmacro,*k_tmacro;
extern NODE *k_test,*k_tnot,*k_optional,*k_rest,*k_aux;
extern NODE *a_subr,*a_fsubr;
extern NODE *a_list,*a_sym,*a_int,*a_float,*a_str,*a_obj,*a_fptr,*a_vect;
extern NODE *s_gcflag;
extern struct fdef ftab[];
/* xlinit - xlisp initialization routine */
xlinit()
{
struct fdef *fptr;
NODE *sym;
/* initialize xlisp (must be in this order) */
xlminit(); /* initialize xldmem.c */
xlsinit(); /* initialize xlsym.c */
xldinit(); /* initialize xldbug.c */
xloinit(); /* initialize xlobj.c */
/* enter the builtin functions */
for (fptr = ftab; fptr->f_name; fptr++)
xlsubr(fptr->f_name,fptr->f_type,fptr->f_fcn);
/* enter operating system specific functions */
osfinit();
/* enter the 't' symbol */
true = xlsenter("T");
setvalue(true,true);
/* enter some important symbols */
s_dot = xlsenter(".");
s_quote = xlsenter("QUOTE");
s_function = xlsenter("FUNCTION");
s_bquote = xlsenter("BACKQUOTE");
s_comma = xlsenter("COMMA");
s_comat = xlsenter("COMMA-AT");
s_lambda = xlsenter("LAMBDA");
s_macro = xlsenter("MACRO");
s_eql = xlsenter("EQL");
/* enter setf place specifiers */
s_car = xlsenter("CAR");
s_cdr = xlsenter("CDR");
s_nth = xlsenter("NTH");
s_get = xlsenter("GET");
s_svalue = xlsenter("SYMBOL-VALUE");
s_splist = xlsenter("SYMBOL-PLIST");
s_aref = xlsenter("AREF");
/* enter the readtable variable and keywords */
s_rtable = xlsenter("*READTABLE*");
k_wspace = xlsenter(":WHITE-SPACE");
k_const = xlsenter(":CONSTITUENT");
k_nmacro = xlsenter(":NMACRO");
k_tmacro = xlsenter(":TMACRO");
xlrinit();
/* enter parameter list keywords */
k_test = xlsenter(":TEST");
k_tnot = xlsenter(":TEST-NOT");
/* enter lambda list keywords */
k_optional = xlsenter("&OPTIONAL");
k_rest = xlsenter("&REST");
k_aux = xlsenter("&AUX");
/* enter *standard-input* and *standard-output* */
s_stdin = xlsenter("*STANDARD-INPUT*");
setvalue(s_stdin,cvfile(stdin));
s_stdout = xlsenter("*STANDARD-OUTPUT*");
setvalue(s_stdout,cvfile(stdout));
/* enter the eval and apply hook variables */
s_evalhook = xlsenter("*EVALHOOK*");
setvalue(s_evalhook,NIL);
s_applyhook = xlsenter("*APPLYHOOK*");
setvalue(s_applyhook,NIL);
/* enter the error traceback and the error break enable flags */
s_tracenable = xlsenter("*TRACENABLE*");
setvalue(s_tracenable,NIL);
s_tlimit = xlsenter("*TRACELIMIT*");
setvalue(s_tlimit,NIL);
s_breakenable = xlsenter("*BREAKENABLE*");
setvalue(s_breakenable,NIL);
/* enter a symbol to control printing of garbage collection messages */
s_gcflag = xlsenter("*GC-FLAG*");
setvalue(s_gcflag,NIL);
/* enter a copyright notice into the oblist */
sym = xlsenter("**Copyright-1986-by-David-Betz**");
setvalue(sym,true);
/* enter type names */
a_subr = xlsenter(":SUBR");
a_fsubr = xlsenter(":FSUBR");
a_list = xlsenter(":CONS");
a_sym = xlsenter(":SYMBOL");
a_int = xlsenter(":FIXNUM");
a_float = xlsenter(":FLONUM");
a_str = xlsenter(":STRING");
a_obj = xlsenter(":OBJECT");
a_fptr = xlsenter(":FILE");
a_vect = xlsenter(":ARRAY");
}